package com.zl.learning.collection;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListNoGeneric {
    public static void main(String[] args) {

        List al = new ArrayList();
        al.add(new Object());
        al.add(111);
        al.add(" hello  ala  l ");

        List<Object> a2 = al;
        a2.add(new Object());
        a2.add(222);
        a2.add("hello  a2a2 ");
        List<Integer> a3 = al;
        a3.add(333);

//        a3.add(new Object());
//        a3.add(new String(" hel_o a3a3"));
//        List<?> a4 = al;
//
//        al.remove(0);
//        a4.clear();
//        a4.add(new Object());
        List<?> a4 = new ArrayList<>();
//        a4.add(4);
    }

    @Test
    public void test2() {
        List<Object> a = new ArrayList<>();
        a.add(3);
        a.add("aaa");
        System.out.println(a);
    }

    @Test
    public void test3() {
        List<Object> a = new ArrayList<>();
        a.add(3);
        a.add("aaa");
        // ?  不能添加
        List<?> a2 = a;
//        a2.add(3);
        System.out.println(a2);
    }

    @Test
    // super get 功能受限
    public void test4() {
        List<? super Number> a = new ArrayList<>();
        a.add(1);
        a.add(2.2);
//        Number c = a.get(1);
        System.out.println(a);
    }

    @Test
    // extends set 功能受限
    public void test5() {
        List<? extends Number> a = new ArrayList<>(Arrays.asList(1, 2.2, 3.3));
//        a.add(1);
        Number c = a.get(2);
        System.out.println(c);
    }


}

